package com.cheegu.common.parser.gpsdata;

import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;

public interface Unpacker {
    /**
     * 读一个32位的有符号int数据
     */
    int readInt32() throws IOException;
    /**
     * 读一个32位的无符号int数据
     */
    long readUInt32() throws IOException;
    /**
     * 读一个64位的有符号int数据
     */
    long readInt64() throws IOException;
    /**
     * 读一个64位的无符号int数据
     */
    BigInteger readUInt64() throws IOException;
    /**
     * 读一个日期数据
     */
    Date readDateTime() throws IOException;
    /**
     * 读一个有符号的byte数据
     */
    byte readByte() throws IOException;
    /**
     * 读一个无符号的byte数据
     */
    short readUByte() throws IOException;

    /**
     * 读指定长度的byte数组
     */
    byte[] readBytes(int length) throws IOException;
    /**
     * 读一个double类型的数据
     */
    double readDouble() throws IOException;
    /**
     * 读一个decimal类型的数据
     */
    BigDecimal readDecimal() throws IOException;
    /**
     * 读一个有符号short类型的数据
     */
    short readShort() throws IOException;
    /**
     * 读一个无符号short类型的数据
     */
    int readUShort() throws IOException;
    /**
     * 读一个float类型的数据
     */
    float readFloat() throws IOException;
    /**
     * 读指定长度的ascii编码的字符串
     * @param length 字节数
     */
    String readASCIIString(int length) throws IOException;
    /**
     * 读指定长度的gbk编码的字符串
     * @param length 字节数
     */
    String readGBKString(int length) throws IOException;
}
